import neon.version as version

v1 = version.Vector()
v2 = version.Vector()
v3 = version.Vector()

v3.merge(version.Vector([('A', 1)]))
assert v3 == version.Vector([('A', 1)])

assert not v1 < v2
assert not v2 < v1
assert not v1 != v2

v1 = version.Vector([('A', 1), ('B', 2)])
v2 = version.Vector([('A', 1), ('B', 2)])
v3 = version.Vector([('A', 1), ('B', 2), ('C', 0)])

assert v1 == v2
assert v1 == v3
assert not v1 < v2
assert not v2 < v1
assert not v1 != v2

v2 = version.Vector([('A', 1), ('B', 3)])
assert not v1 == v2
assert v1 < v2
assert v2 > v1
assert v1 <= v2

v2 = version.Vector([('A', 0), ('B', 3)])
assert not v1 == v2
assert v1 != v2
assert not v1 < v2
assert not v1 > v2

v = version.merge(version.Vector([('A', 1), ('B', 1)]),
          version.Vector([('A', 0), ('B', 3)]),
          version.Vector([('C', 3)]))
assert v == version.Vector([('A', 1), ('B', 3), ('C', 3)])
v.merge(version.Vector([('A', 10)]))
assert v == version.Vector([('A', 10), ('B', 3), ('C', 3)])
assert str(v) == 'C:3 B:3 A:10'
assert version.Vector([('A', 10), ('B', 3), ('C', 3)]) == \
       version.str2Vector('A:10 B:3 C:3')
assert version.Vector([('A', 10), ('B', 2), ('C', 3)]) == \
       version.str2Vector('A:10 B:2 C:3')
assert version.Vector() == version.str2Vector('')
